var toast ;
let layerIndex;
let $;
/**
 * 弹出教师新增/更新对话框
 * */
function showStudentDlg(id){
    let title="新增学生"
    $("#btnOk").prop("disabled",false).removeClass("layui-btn-disabled");
    if(id){
        //是编辑
        title="编辑学生"
        $("#formId").css("display","block");


        //读取学生信息并赋值
        $.ajax({
            url:"/api/student/"+id,
            method:"GET"
        }).done(result=>{
            console.log(result)
            if(result.code>=0) {

                let data = result.data

                //遍历 result 对象并将值填充到 #studForm 表单中
                $.each(data, function (key, value) {
                    //修改选择器，确保选择的是#studForm内的字段
                    var field = $('#studForm [name="' + key + '"]');
                    if (field.is(':radio')) {
                        field.filter('[value="' + value + '"]').prop('checked', true);
                        //选中对应的单选按钮
                    } else if (field.is(':checkbox')) {
                        field.prop('checked', value === "yes");//选中复选框
                    } else {
                        field.val(value);//填充文本框或其他字段
                    }
                });

                //再次渲染表单，确保UI更新
                layui.form.render();
            }else {
                toast.error({
                    message:result.msg
                });

            }
        })
    } else{
        //是新增
        $("#studForm")[0].reset();
        $("#formId").css("display","none");
    }
    layerIndex=layer.open({
        type:1,
        title:title,
        area:['520px','auto'],
        content:$('#popDlg')[0].innerHTML//捕获层
    });

}

function getSearchCondtion(){
    let formData={}
    //遍历每个输入元素，将其值存储到formData对象中
    $('#queryForm').find('input,select').each(function (){
        let name=$(this).attr('name');//获取元素的name属性
        let value=$(this).val();//获取元素的值

        //只有name属性存在且值不为空才会添加到formData中
        if(name && value){
            formData[name]=value;
        }
    });
    return formData
}

layui.use(function (){
    $=layui.$
    toast=layui.toast;

    //验证表单是否合法
    layui.form.on('submit(stud-dlg)',function (data){
        event.preventDefault();//阻止表单默认提交
        // commitStuDlg();
        if(this.isSubmitting) return false;
        this.isSubmitting =true;
        commitStuDlg()
            .catch(error=>{
                console.error('提交失败:',error);
            }).finally(()=>{
            this.isSubmitting=false;
        });
        return false;
    })
    //表格初始化
    const table=layui.table;
    let teacher=getSearchCondtion();


    //创建渲染实例
    table.render({
        elem:'#tbStudent',
        url:'/api/student/getbypage',
        //此处为静态模拟数据，实际使用时需换成真实接口
        method:"POST",
        //确保以JSON格式发送
        contentType:'application/json',
        where:{"data":teacher},
        page:true,
        cols:[[
            {type: 'checkbox',fixed:'left'},
            {field: 'id',fixed: 'left',width:80,title:'id',sort:true},
            {field: 'name',title: '姓名'},
            {field: 'sno',title: '学号',width: 150},
            {field: 'sex',width: 80,title: '性别',sort: true,templet:d=>d.sex===1?'男' :(d.sex===2?'女':'未知')},
            {field: 'age',width: 100,title: '年龄',sort: true},
            {field: 'right',title: '操作',width: 134,minwidth:125,templet:'#editTemplate'}
        ]],
        done:function (rs){
            //console.log(rs)
        }
    });


    //触发单元格工具事件
    table.on('tool(tbStudent)',function (obj){
        var data =obj.data;
        if(obj.event==='edit'){

            $("#btnOk").prop("disabled",false).removeClass("layui-btn-disabled");
            showStudentDlg(data.id);

        }
    })
});


function search(){
    let student=getSearchCondtion();
    const table=layui.table;
    table.reloadData("tbStudent",{
        where: {data:student}
    });
    console.log("where condition:"+JSON.stringify(student))
}

function deleteConfirm(){
    const table=layui.table;
    //获取表格的选中状态
    const checkStatus=table.checkStatus('tbStudent');
    //'tbStudent'是你的表格的ID或lay-filter
    console.log(checkStatus.data);
    const ids=checkStatus.data.map(item=>item.id);
    if(ids.length===0){
        layer.msg('请选择要删除的学生!',{icon:2});
        return;
    }
    layer.confirm('是否删除？一旦删除，不可恢复',{icon:3},function () {
        $.ajax({
            url:"/api/student/deleteId/"+ids.join(","),
            method:"DELETE",
        }).done(result=>{
            search();
        })
        layer.closeAll();//关闭所有层
    },function (){
    });
}
function commitStuDlg(){
    //返回Promise以便更好地控制流程
    return new Promise((resolve,reject)=>{
        //先禁用按钮，防止重复提交
        $("#btnOk").prop("disabled",true).addClass("layui-btn-disabled");
        const id =$("#id").val();
        const formData =$(".layui-layer-page #studForm").serialize();
        const url=id?"/api/student/update" :"/api/student/add";
        const method=id?"PUT":"POST";

        $.ajax({
            url:url,
            method:method,
            data:formData
        }).done(result=>{
            if(result.code>=0 && result.data?.id){
                //成功情况
                search();
                if(layerIndex){
                    layer.close(layerIndex);
                }
                resolve(result);
            }else {
                const errorMsg=result.msg||(id?"更新失败":"新增失败，没有返回id");
                toast.error({message: errorMsg});
                reject(new Error(errorMsg));
            }
        }).fail((jqXHR,textStatus,errorThrown)=>{
            const errorMsg='请求失败:${textStatus}-${errorThrown}';
            console.error(errorMsg);
            alert("系统错误，请稍后重试");
            reject(new Error(errorMsg));
        }).always(()=>{
            $("#btnOk").prop("disabled",false).removeClass("layui-btn-disabled");
        });
    });
}